#ifndef __MISSION_3_FSM_H
#define __MISSION_3_FSM_H

#ifdef __cplusplus
extern "C" {
#endif

#include "stdint.h"
#include "./Lw_Queue/lw_queue.h"
#include "autocar_global.h"

/********************宏定义********************/

#define QUE_MISSION_3_MSG_LEN	8	/*任务3消息队列的长度*/
#define M3_ANGLE_IN_PLACE_THRE	5	/*任务3偏航角到位阈值次数*/
#define M3_LAST_LINE_INSPECTION	2	/*任务3最后一次巡线次第*/
#define M3_ADJUST_THRE			1	/*状态迁移裁决阈值*/

/********************类型定义********************/

/*任务3状态定义*/
enum mission_3_state
{
	MISSION_3_IDLE,			/*空闲态*/
	MISSION_3_READY,		/*就绪态*/
	M3_WALK_STRAIGHT_LINE,	/*走直线*/
	M3_LINE_INSPECTION,		/*巡黑线*/
	M3_DIRECTION_ADJUST,	/*调整小车方向*/
	M3_LINE_INSPEC_PRETURN, 	/*巡线预转向*/
};

/********************全局变量声明********************/
extern lwq_t mission_3_fsm_que; /*任务3状态机的消息队列*/
extern state_machine_t mission_3_fsm; /*任务3状态机*/

void mission_3_fsm_init(void);
void mission_3_fsm_dispatch(state_machine_t* me, param_event_t* e);

#ifdef __cplusplus
}
#endif

#endif
